In [5]:
import numpy as np

This is for the Thorlabs PDA36A at the 20dB setting.


In [31]:
# Enter the specs of the detector
nep = 2.34e-12  # in Watts per root hz
BW = 10e6  # Bandwidth in Hz
gain = 0.75e4  # gain in V/A
responsivity = 0.5  # Amps per Watt (assume 800 nm)
pmin = nep * np.sqrt(BW)
volts_min = pmin * responsivity * gain
print("voltage generated by p_min:",volts_min)


voltage generated by p_min: 2.37170824513e-06

Note that we need at least 10mV to even resolve a signal on the scope. So the NEP is only part of the story:


In [32]:
scope_floor_factor = 0.010/volts_min

In [33]:
# the power has to be scope_floor_factor times larger in order to generate 10mV:
pmin * scope_floor_factor


Out[33]:
2.6666666666666664e-06

This setting (20dB) leaves plenty of bandwidth but can't resolve our signal (1.3uW). It's limited to double our signal.

Now for the 30dB setting:


In [27]:
nep = 1.21e-12
BW = 260e3
gain = 2.38e4
responsivity = 0.5
pmin = nep * np.sqrt(BW)
volts_min = pmin * responsivity * gain
print(volts_min)


7.34207819762e-06

In [28]:
scope_floor_factor = 0.010/volts_min

In [29]:
# resolvable power:
pmin * scope_floor_factor


Out[29]:
8.4033613445378162e-07

On 30dB we start to hit the bandwidth limit but can resolve down to 0.8 uW (half our signal). Even so, we'd only get 10mV out of it.

Now the APD120A:


In [30]:
nep = 0.2e-12
BW = 50e6
gain = 50000
responsivity = 25
pmin = nep * np.sqrt(BW)
volts_min = pmin * responsivity * gain
print(volts_min)
scope_floor_factor = 0.010/volts_min

# resolvable power:
pmin * scope_floor_factor


0.00176776695297
Out[30]:
7.9999999999999988e-09

This can resolve down to 8nW so our 1.3uW would be ~1000x larger.

Final question: what is the voltage generated by hitting it with a 1.3uW pulse?


In [1]:
1.3e-6 * 50000 * 25  # watts times volts/amp times amps/watt gives volts:


Out[1]:
1.625

Looks like a winner!


In [ ]: